package org.huawei260.TiKu.B;

import java.util.Scanner;

/**
 * @Auther: qingle
 * @Date: 2024/10/27-17:10
 * @Description:
 *
 * 给你一串末加密的字符串str，通过对字符串的每一个字母进行改变来实现加密，加密方式是在每一字母str[i]偏移特定数组元素a[i]的量，数组a前三位已经赋值：a[0]=1,a[1]=2,a[2]=4。
 *
 *
 * 		当i>=3时，数组元素a[i]=a[i-1]+a[i-2]+a[i-3]。
 *
 *
 * 		例如: 原文 abcde 加密后 bdgkr，其中偏移量分别是1,2,4,7,13。
 *
 * 输入格式
 *
 * 		第一行为一个整数n (1 <= n <= 1000) ，表示有n组测试数据，每组数据包含一行，原文str(只含有小写字母，0 < 长度 <= 50)。
 *
 * 输出格式
 *
 * 		每组测试数据输出一行，表示字符串的密文
 *
 * 80% 通过率
 * @version: 1.0
 */
public class B_2503_2023B_字符串加密 {

	public static String getResult(String str)
	{
		// 如果超过了z,需要进行环形处理
		// 即z 偏移一位后变为 a，这里处理公式为 (s[i] + ar[i] - 97) % 26 + 97


		StringBuilder sb = new StringBuilder();
		int[] a = new int[str.length()];
		if (str == null || str.length() == 0) return sb.toString();
		if (str.length() == 1) {
			return String.valueOf(applyCyclicShift(str.charAt(0),1));
		}
		if(str.length() == 2) {
			return String.valueOf(applyCyclicShift(str.charAt(0), 1)) + applyCyclicShift(str.charAt(1) , 2);
		}
    if(str.length() == 3) {
			return String.valueOf(applyCyclicShift(str.charAt(0), 1)) + applyCyclicShift(str.charAt(1) , 2) + applyCyclicShift(str.charAt(2),4);
    }
		if(str.length() > 3) {
			a[0] = 1;
			a[1] = 2;
			a[2] = 4;
			for (int i = 3; i < a.length; i++) {
				a[i] = a[i - 1] + a[i - 2] + a[i - 3];
			}
			for (int i= 0; i < str.length(); i++) {
				sb.append(applyCyclicShift(str.charAt(i), a[i]));
			}
		}

		return sb.toString();
	}

//	private static char applyCyclicShift(char c, int offset) {
//		// 应用环形偏移处理公式
//		return (char) (((c + offset - 97) % 26) + 97);
//	}

	private static char applyCyclicShift(char c, int offset) {
		// 应用环形偏移处理公式
		int shifted = (c - 'a' + offset + 26) % 26;
		return (char) ('a' + shifted);
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		while (n-- > 0) {
			String str = sc.next();
			System.out.println(getResult(str));
		}
	}
}
